package common.util.page;

/**
 * 
 * 分页实体类对象
 * <p>
 * Title: WebPagination.java
 * </p>
 * <p>
 * Description:培训师平台
 * </p>
 * <p>
 * Copyright: Copyright (c) 2011
 * </p>
 * <p>
 * Company:北京千家在线
 * </p>
 * 
 * @author miaoyouhu
 * @date Jun 30, 2011 4:09:12 PM
 * @version V1.0
 */
public class WebPagination {
	// 每页显示记录数
	private int pageSize = 8;
	// 最多显示分页页数
	private int listStep = 8;
	// 默认显示第几页
	private int pageNo = 1;
	// 总数量
	private int count = 0;
	// 字符串当前页
	private String pn = "";
	// 总页数
	private int pageSum = 1;
	// 从第几页开始显示
	private int pageBegin = 1;
	// 显示到第几页
	private int pageEnd;
	// URL路径
	private String url = "";
	// 后缀名
	private String suffix = ".html";
	private String divide = "/"; // 分页编号与符号之间的分隔符;

	public String getDivide() {
		return divide;
	}

	public void setDivide(String divide) {
		this.divide = divide;
	}

	public WebPagination() {
	}

	public WebPagination(int count, String url, String suffix) {
		this.count = count;
		this.url = url;
		this.suffix = suffix;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getListStep() {
		return listStep;
	}

	public void setListStep(int listStep) {
		this.listStep = listStep;
	}

	public int getPageNo() {
		if (pageNo > getPageSum())
			pageNo = pageSum;
		if (pageNo < 1)
			pageNo = 1;
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	public int getPageSum() {
		if (pageSum <= 1)
			this.pageSum = (int) Math.ceil((double) count / pageSize);// 求总页数，ceil（num）取整不小于num
		return pageSum;
	}

	public void setPageSum(int pageSum) {
		this.pageSum = pageSum;
	}

	private void init() {
		pageBegin = (getPageNo() - (int) Math.ceil((double) listStep / 2));// 从第几页开始显示分页信息
		if (pageBegin < 1)
			pageBegin = 1;
		pageEnd = getPageNo() + listStep / 2;// 分页信息显示到第几页
		if (pageEnd > pageSum)
			pageEnd = pageSum + 1;
		else if (pageBegin + listStep < pageSum)
			pageEnd = pageBegin + listStep;

	}

	/**
	 * 仿Google
	 */
	@Override
	public String toString() {
		init();
		if (pageSum <= 1)
			return null;
		StringBuffer pages = new StringBuffer();
		pages.append("<div id=\"page\" style=\"font-size:12px;\">");
		if (pageNo > 1) {
			pages.append("<a style=\"text-decoration:underline\" href=\"")
					.append(getUrl()).append(pageNo - 1).append(suffix).append(
							"\">");
			pages.append("上一页").append("</a>&nbsp;");
		} else {
			pages.append("上一页&nbsp;");
		}
		for (int i = pageBegin; i < pageEnd; i++) {
			if (i != pageNo) {// 如果i不等于当前页
				pages.append("<a style=\"text-decoration:underline\" href=\"")
						.append(getUrl()).append(i).append(suffix)
						.append("\">");
				pages.append(i).append("</a>&nbsp;");
			} else {
				pages.append("<font color=\"\red\">").append(i).append(
						"</font>&nbsp;");
			}
		}
		if (pageNo < pageSum) {
			pages.append("<a style=\"text-decoration:underline\" href=\"")
					.append(getUrl()).append(pageNo + 1).append(suffix).append(
							"\">");
			pages.append("下一页").append("</a>&nbsp;");
		} else {
			pages.append("下一页&nbsp;");
		}
		pages.append("</div>");
		return pages.toString();
	}

	/**
	 * 只有上一页和下一页
	 * 
	 * @return
	 */
	public String getBaseStyle() {
		init();
		if (pageSum < 1)
			return null;
		StringBuffer pages = new StringBuffer();
		pages.append("<div id=\"page\" style=\"font-size:12px;\">");
		if (pageNo > 1) {
			pages
					.append(
							"<a style=\"text-decoration:underline\" href=\" target=\"_self\"")
					.append(getUrl()).append(pageNo - 1).append(suffix).append(
							"\">");
			pages.append("上一页").append("</a>&nbsp;");
		} else {
			pages.append("上一页&nbsp;");
		}
		if (pageNo < pageSum) {
			pages
					.append(
							"<a style=\"text-decoration:underline\" href=\" target=\"_self\"")
					.append(getUrl()).append(pageNo + 1).append(suffix).append(
							"\">");
			pages.append("下一页").append("</a>&nbsp;");
		} else {
			pages.append("下一页&nbsp;");
		}
		pages.append("</div>");
		return pages.toString();
	}


	public void setSuffix(String suffix) {
		this.suffix = suffix;
	}

	public String getPn() {
		return pn;
	}

	public void setPn(String pn) {
		try {
			pageNo = Integer.parseInt(pn);
		} catch (Exception e) {
			pageNo = 1;
		}
		this.pn = pn;
	}


	/**
	 * 新闻系统前台分页
	 */
	public String newsPros() {
		init();
		if (pageSum <= 1)
			return null;
		StringBuffer pages = new StringBuffer();
		pages.append("<a class=\"current\" title=\"首页\" href=\"" + this.getUrl() + this.suffix
				+ "\">首页</a>");
		if (pageNo > 1) {
			pages.append("<a class=\"uppage\"  href=\"").append(getUrl()).append("-").append(
					pageNo - 1).append(suffix).append("\">");
			pages.append("上一页").append("</a>");
		} else {
			pages.append("<a class=\"uppage\" title=\"上一页\" href=\"" + this.getUrl()
					+ this.suffix + "\">上一页</a>");
		}
		for (int i = pageBegin; i < pageEnd; i++) {
			if (i != pageNo) {// 如果i不等于当前页
				pages.append("<a  href=\"").append(getUrl()).append("-")
						.append(i).append(suffix).append("\">");
				pages.append(i).append("</a>");
			} else {
				pages.append("<a href=\"#\"><font color=\"red\">").append(i)
						.append("</font></a>");
			}
		}
		if (pageNo < pageSum) {
			pages.append("<a class=\"downpage\" title=\"下一页\" href=\"").append(getUrl()).append("-").append(
					pageNo + 1).append(suffix).append("\">");
			pages.append("下一页").append("</a>");
		} else {
			pages.append("<a class=\"downpage\" title=\"下一页\" href=\"" + this.getUrl() + "-"
					+ this.pageSum + this.suffix + "\">下一页</a>");
		}
		pages.append("<a class=\"current\" title=\"尾页\" href=\"" + this.getUrl() + "-"
				+ this.pageSum + this.suffix + "\">尾页</a>");
		pages.append("<a href=\"" + this.getUrl() + "-" + this.pageSum
				+ this.suffix + "\"> <font color=\"red\">" + this.pageNo
				+ "</font> /" + this.pageSum + "</a>");
		return pages.toString();
	}

	public static void main(String[] ages) {
////		WebPagination page = new WebPagination(305,
////				"comlist/wenlist/News/2009110049_", ".aspx");
//		System.out.println(page);

	}
}
